#include <stdio.h>

#define AA 0
#define AB 1
#define AC -1
// or
enum _e
{
	ac = -1,
	aa = 0, 
	ab = 1,
};

void swen(int va)
{
    /*1149:	f3 0f 1e fa          	endbr64 
    114d:	55                   	push   %rbp
    114e:	48 89 e5             	mov    %rsp,%rbp
    1151:	48 83 ec 10          	sub    $0x10,%rsp
    1155:	89 7d fc             	mov    %edi,-0x4(%rbp)	*/

	switch (va) {

    /*1158:	83 7d fc 01          	cmpl   $0x1,-0x4(%rbp)
    115c:	74 44                	je     11a2 <swen+0x59>	// va=1

    115e:	83 7d fc 01          	cmpl   $0x1,-0x4(%rbp)
    1162:	7f 56                	jg     11ba <swen+0x71>	// default

    1164:	83 7d fc ff          	cmpl   $0xffffffff,-0x4(%rbp) 
    1168:	74 08                	je     1172 <swen+0x29>	// va=-1

    116a:	83 7d fc 00          	cmpl   $0x0,-0x4(%rbp)
    116e:	74 1a                	je     118a <swen+0x41>	// va=0

    1170:	eb 48                	jmp    11ba <swen+0x71>	// default	*/

		case AC:	/* va == -1*/
    /*1172:	8b 45 fc             	mov    -0x4(%rbp),%eax
    1175:	89 c6                	mov    %eax,%esi
    1177:	48 8d 3d 86 0e 00 00 	lea    0xe86(%rip),%rdi        # 2004 <_IO_stdin_used+0x4>
    117e:	b8 00 00 00 00       	mov    $0x0,%eax
    1183:	e8 c8 fe ff ff       	callq  1050 <printf@plt>*/
		printf("case AC, va=%d\n", va);

    /*1188:	eb 47                	jmp    11d1 <swen+0x88>*/
		break;
		
		case AA:	/* va == 0*/
    /*118a:	8b 45 fc             	mov    -0x4(%rbp),%eax
    118d:	89 c6                	mov    %eax,%esi
    118f:	48 8d 3d 7f 0e 00 00 	lea    0xe7f(%rip),%rdi        # 2015 <_IO_stdin_used+0x15>
    1196:	b8 00 00 00 00       	mov    $0x0,%eax
    119b:	e8 b0 fe ff ff       	callq  1050 <printf@plt>*/
		printf("case AA, va=%d\n", va);

    /*11a0:	eb 2f                	jmp    11d1 <swen+0x88>*/
		break;

		case AB:	/* va == 1*/
    /*11a2:	8b 45 fc             	mov    -0x4(%rbp),%eax
    11a5:	89 c6                	mov    %eax,%esi
    11a7:	48 8d 3d 78 0e 00 00 	lea    0xe78(%rip),%rdi        # 2026 <_IO_stdin_used+0x26>
    11ae:	b8 00 00 00 00       	mov    $0x0,%eax
    11b3:	e8 98 fe ff ff       	callq  1050 <printf@plt>*/
		printf("case AB, va=%d\n", va);

    /*11b8:	eb 17                	jmp    11d1 <swen+0x88>*/
		break;

	default:
    /*11ba:	8b 45 fc             	mov    -0x4(%rbp),%eax
    11bd:	89 c6                	mov    %eax,%esi
    11bf:	48 8d 3d 71 0e 00 00 	lea    0xe71(%rip),%rdi        # 2037 <_IO_stdin_used+0x37>
    11c6:	b8 00 00 00 00       	mov    $0x0,%eax
    11cb:	e8 80 fe ff ff       	callq  1050 <printf@plt>*/
		printf("case default, va=%d\n", va);
	}

    /*11d0:	90                   	nop
    11d1:	90                   	nop
    11d2:	c9                   	leaveq 
    11d3:	c3                   	retq   */
}

int main()
{
    /*11d4:	f3 0f 1e fa          	endbr64 
    11d8:	55                   	push   %rbp
    11d9:	48 89 e5             	mov    %rsp,%rbp
    11dc:	48 83 ec 10          	sub    $0x10,%rsp
    11e0:	c7 45 fc 04 00 00 00 	movl   $0x4,-0x4(%rbp)*/
		int a = 4;

    /*11e7:	8b 45 fc             	mov    -0x4(%rbp),%eax
    11ea:	89 c7                	mov    %eax,%edi
    11ec:	e8 58 ff ff ff       	callq  1149 <swen>*/
		swen(a);

    /*11f1:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%rbp)*/
		a = 1;

    /*11f8:	8b 45 fc             	mov    -0x4(%rbp),%eax
    11fb:	89 c7                	mov    %eax,%edi
    11fd:	e8 47 ff ff ff       	callq  1149 <swen>*/
		swen(a);

    /*1202:	c7 45 fc fc ff ff ff 	movl   $0xfffffffc,-0x4(%rbp)*/
		a = -4;

    /*1209:	8b 45 fc             	mov    -0x4(%rbp),%eax
    120c:	89 c7                	mov    %eax,%edi
    120e:	e8 36 ff ff ff       	callq  1149 <swen>*/
		swen(a);
    
	/*1213:	b8 00 00 00 00       	mov    $0x0,%eax
    1218:	c9                   	leaveq 
    1219:	c3                   	retq   
    121a:	66 0f 1f 44 00 00    	nopw   0x0(%rax,%rax,1)*/
		return 0;
}
